package com.ruoyi.contract.service;

import java.util.List;
import com.ruoyi.contract.domain.Contract;
import com.ruoyi.contract.domain.contractVo.ContractAllPartyVo;
import com.ruoyi.contract.domain.contractVo.ContractAllPaymentVo;
import com.ruoyi.contract.domain.contractVo.ContractAllRelevantVo;

/**
 * 合同Service接口
 * 
 * @author ruoyi
 * @date 2024-10-18
 */
public interface IContractService 
{
    /**
     * 查询合同
     * 
     * @param contractId 合同主键
     * @return 合同
     */
    public ContractAllRelevantVo selectContractByContractId(Long contractId);

    /**
     * 查询合同列表
     * 
     * @param contract 合同
     * @return 合同集合
     */
    public List<ContractAllPartyVo> selectContractList(Contract contract);

    /**
     * 新增合同
     * 
     * @param contractAllRelevantVo 合同相关所有
     * @return 结果
     */
    public int insertContract(ContractAllRelevantVo contractAllRelevantVo);

    /**
     * 修改合同
     * 
     * @param contractAllRelevantVo 合同相关所有
     * @return 结果
     */
    public int updateContract(ContractAllRelevantVo contractAllRelevantVo);

    /**
     * 批量删除合同
     * 
     * @param contractIds 需要删除的合同主键集合
     * @return 结果
     */
    public int deleteContractByContractIds(Long[] contractIds);

    /**
     * 删除合同信息
     * 
     * @param contractId 合同主键
     * @return 结果
     */
    public int deleteContractByContractId(Long contractId);

    /**
     * 查询所有合同和其收付款计划
     *
     * @return 合同和收付款计划集合
     */
    public List<ContractAllPaymentVo> selectContractPaymentList(Contract contract);

    /**
     * 查询合同列表
     *
     * @param contractIds 合同主键列表
     * @return 合同集合
     */
    public List<Contract> selectContractListByContractIds(Long[] contractIds);
}
